﻿<html>
  <head>
    <meta name="source" content="http://www.terrainformatica.com/wiki/doku.php?id=h-smile:built-in-behaviors:edit"/>
    <meta name="generator" content="h-smile:richtext"/>
  </head>
<body>
  <h1>behavior: number</h1>
  <p>整数(integer)或浮点(float)数字输入元素行为。该行为可以被应用到任何合适的元素。</p>
  <h2>元素</h2>
  <p>默认情况下，应用了该行为的元素有:</p>
  <ul>
    <li><code>&lt;input type=&quot;number&quot; /&gt;</code> - 行内整数(integer)或浮点(float)类型输入元素</li></ul>
  <h2>示例</h2>
  <div>
    <input type="number" novalue="请输入一个数" />
	<input type="number" novalue="请输入一个数" />
  </div>
  <h2>模型</h2>
  <p>初始化该行为时会创建下面的DOM结构:</p>
  <pre>&lt;input&gt;
  <code>&lt;caption&gt;
  &lt;button.plus&gt;
  &lt;button.minus&gt;
</code>&lt;/input&gt;
</pre>
  <p>其中，&lt;caption&gt;将拥有相应过滤器的<code>behavior:edit</code>行为。如果input定义了<code>step</code>属性，则将会创建<code>&lt;button.plus&gt;</code>/<code>&lt;button.minus&gt;</code>子元素。</p>
  <p>所有的子元素将拥有<code>:synthetic</code>状态标志。</p>
  <h2>属性</h2>
  <p>该行为需要知道的属性:</p>
  <ul>
    <li><code>value=numeric</code> - 元素的初始值。</li>
    <li><code>min=numeric</code> - 允许的最小值，注：Sciter并不会限制输入的大小，当value小于min时，输入框会处于:invalid状态。</li>
    <li><code>max=numeric</code> - 允许的最大值，注：Sciter并不会限制输入的大小，当value大于max时，输入框会处于:invalid状态。</li>
    <li><code>step=numeric</code> - 递增/减的步长。如果该属性被定义，该行为将会创建 -/+ 按钮。</li>
    <li><code>novalue=&quot;text&quot;</code> - 当输入框为空时显示的文本。你可以使用CSS选择器<code>:empty</code>来设置这个状态时的样式。</li>
    <li><code>readonly</code> - 声明该元素是只读的。</li></ul>
  <h2>事件</h2>
  <p>除了标准事件集(鼠标、按键、聚焦)外，该行为还生成:</p>
  <ul>
    <li>EDIT_VALUE_CHANGED 事件 - 当元素的值被用户修改时产生该事件。该事件为异步事件。</li>
    <li>EDIT_VALUE_CHANGING 事件 - 当任何修改该元素的值时发生该事件。通过该事件你可以在字符插入到文本框前过滤一些字符。该事件为同步事件。其中:</li>
    <ul>
      <li>event.reason 为以下值之一: </li></ul>
    <ul>
      <ul>
        <li>const BY_INS_CHAR  = 3; // 因输入单个字符引起的事件。</li>
        <li>const BY_INS_CHARS = 4; // 从剪切板粘贴引起的事件。</li>
        <li>const BY_DEL_CHAR  = 5; // 由DELETE/BACKSPACE按键引起的事件。</li>
        <li>const BY_DEL_CHARS = 6; // 由删除选择内容引起的事件。</li></ul>
      <li>event.data - string, 读/写。 如果reason为BY_INS_***值，则包含插入的字符;</li></ul></ul>
  <h2>value</h2>
  <p>float or integer or undefined, 反应内部输入缓冲区的当前状态。</p>
  <h2>特有组合键</h2>
  <ul>
    <li>LEFT, CTRL+LEFT, SHIFT+LEFT, CTRL+SHIFT+LEFT</li>
    <li>RIGHT, CTRL+RIGHT, SHIFT+RIGHT, CTRL+SHIFT+RIGHT</li>
    <li>HOME, SHIFT+HOME</li>
    <li>END, SHIFT+END</li>
    <li>BACKSPACE, ALT+BACKSPACE, CTRL+BACKSPACE</li>
    <li>CTRL+A</li>
    <li>DELETE, SHIFT+DELETE, CTRL+DELETE</li>
    <li>INSERT, SHIFT+INSERT, CTRL+INSERT</li>
    <li>CTRL+X</li>
    <li>CTRL+V</li>
    <li>CTRL+Z</li>
    <li>CTRL+(LEFT)SHIFT 和 CTRL+(RIGHT)SHIFT - 如果form表单上有<code>dir</code>属性时，这个组合键用来在<code>dir=&quot;ltr&quot;</code>和切换<code>dir=&quot;rtl&quot;</code>间切换。</li></ul>
  <h2>方法</h2>
  <p>N/A - 该行为没有引入任何特有的方法，但是&lt;caption&gt;子元素拥有behavior:edit行为的特有方法。</p>
  <dl></dl>
</body>
</html>